namespace SS.WPF.Framework.ViewModel.Navigation
{
    /// <summary>
    /// The interface is used to present a NavigationNode
    /// <para>
    /// It implements interface IEditable to present an editable Navigation node 
    /// </para>
    /// </summary>
    public interface INavigationNode : IDisplayItem, IEditable
    {
        /// <summary>
        /// Refer to parent node
        /// </summary>
        INavigationNode Parent { get; set; }

        /// <summary>
        /// Refer to children nodes
        /// </summary>
        INavigationNode[] Children { get; set; }

        /// <summary>
        /// True: the ViewModel associated with this node is added to Conductor,
        /// <para>
        /// False: otherwise
        /// </para>
        /// </summary>
        bool IsAdded { get; set; }

        /// <summary>
        /// True: the ViewModel associated with this node is activated
        /// <para>
        /// False: otherwise
        /// </para>
        /// </summary>
        bool IsSelected { get; set; }

        /// <summary>
        /// True: this node is expanded
        /// <para>
        /// False: otherwise
        /// </para>
        /// </summary>
        bool IsExpanded { get; set; }

        /// <summary>
        /// True: this node is deleted
        /// <para>
        /// False: otherwise
        /// </para>
        /// </summary>
        bool IsDeleted { get; set; }
    }
}